<?php
class Bd{
	/*
		Classe Bd - Version 0.0
		Auteur : Loïc "MetalFox" PARRA
		Pour : Sébastien LOPEZ
		Classe permettant la gestion des bases de données.
		
		README :
		Lorsque l'on envoie une requete avec query(), le retour est une ressource mysql. Il faut donc la traiter avec mysql_fetch_assoc().
		
		Dans le constructeur, on peut spécifier si l'on souhaite passer en mode "singleCall". Cela signifie qu'a chaque requete, on va ouvrir une connexion, lancer la requete, et 
		refermer la connexion. Ce mode est plus couteux en ressource, mais permet de gérer plusieurs bases de données en même temps (avec deux instances en mode singleCall).
		
		SUCRE SYNTAXIQUE :
		- Il est possible de lancer une requete de suite apres l'instanciation, la connexion sera automatique :
			$bd = new Bd("host","log","pass","base");
			$bd->query($query);
	*/
	
	var $host;
	var $password;
	var $base;
	var $db;
	var $isConnected;
	var $singleCall;
	
	function Bd($host,$login,$pass,$base,$singleCall=false)
	{
		/*
			Constructeur.
			@param $host : hote de la base de données.
			@param $login : login de la base de données.
			@param $pass : mot de passe de la base de données.
			@param $base : base sur laquelle on doit faire les requetes.
			@param $singleCall : active le mode singleCall (par défaut : non).
			@return : N/A.
		*/
		
		$this->host = $host;
		$this->login = $login;
		$this->password = $pass;
		$this->base= $base;
		$this->singleCall= $singleCall;
		$this->isConnected=false;
	}

	function connect()
	{
		/*
			Connexion a la base de données.
			@param : N/A;
			@return : N/A;
		*/
		$this->db = @mysql_connect($this->host,$this->login,$this->password);
		if(!$this->db) return 2; // Code erreur de connexion
		if(!@mysql_select_db($this->base)) return 3; // Code erreur de selection de base
		$this->isConnected = true;
		return 1; // Code de retour normal.
	}

	function query($query)
	{
		/*
			Envoi d'une requete a la base de données.
			@param $query : la requete a executer.
			@return : la ressource mysql de la requete.
		*/
		
		if(!$this->isConnected){
			$this->connect();
		}
		$resultat = mysql_query($query) or die("Erreur d'execution de la requete - ".mysql_error()." Requete : ".$query);
		if($this->singleCall){
			$this->close();
		}
		return $resultat;
	}

	function close()
	{
		/*
			Fermeture de la connexion.
			@param : N/A.
			@return : N/A.
		*/
		mysql_close();
		$this->isConnected=false;
	}
	
	function selectAll($table)
	{
		/*
			Selectionne tous les elements d'une table.
			@param $table : table sur laquelle faire la requete.
			@return : la ressource mysql de la requete.
		*/
		return $this->query("SELECT * FROM ".$table.";");
	}
}
?>